﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace Bot.Domain.CodeGenerationPlan
{
    public class CodeGenerationPlanDto : BaseDto
    {
        public CodeGenerationPlanDto()
        {
        }
        
        [Required]
        
        public int SiteID { get; set; }   
        
        [Required]
        [MaxLength(8)]        
        public string Version { get; set; }   
        
        [Required]
        [MaxLength(64)]        
        public string Name { get; set; }   
        
        [Required]
        [MaxLength(512)]        
        public string Description { get; set; }   
        
        [Required]
        
        public int Language { get; set; }   
        
        [Required]
        
        public int ChatButtonType { get; set; }   
        
        [Required]
        
        public bool ChatButtonIfFloat { get; set; }   
        
        [Required]
        
        public byte ChatButtonPosition { get; set; }   
        
        [Required]
        
        public int ChatButtonXOffset { get; set; }   
        
        [Required]
        
        public bool ChatButtonXOffsetIfPixels { get; set; }   
        
        [Required]
        
        public int ChatButtonYOffset { get; set; }   
        
        [Required]
        
        public bool ChatButtonYOffsetIfPixels { get; set; }   
        
        [Required]
        
        public byte ChatButtonImageType { get; set; }   
        
        [Required]
        [MaxLength(2048)]        
        public string ChatButtonOnlineURL { get; set; }   
        
        [Required]
        
        public int ChatButtonOnlineImageId { get; set; }   
        
        [Required]
        [MaxLength(2048)]        
        public string ChatButtonOfflineURL { get; set; }   
        
        [Required]
        
        public int ChatButtonOfflineImageId { get; set; }   
        
        [Required]
        
        public bool ChatButtonIfHideOffline { get; set; }   
        
        [Required]
        
        public byte ChatButtonRouteToType { get; set; }   
        
        [Required]
        
        public int ChatButtonRouteToId { get; set; }   
        
        [Required]
        
        public byte InvitationPosition { get; set; }   
        
        [Required]
        
        public int InvitationXOffset { get; set; }   
        
        [Required]
        
        public bool InvitationXOffsetIfPixels { get; set; }   
        
        [Required]
        
        public int InvitationYOffset { get; set; }   
        
        [Required]
        
        public bool InvitationYOffsetIfPixels { get; set; }   
        
        [Required]
        
        public byte InvitationPositionStyle { get; set; }   
        
        [Required]
        
        public byte InvitationImageType { get; set; }   
        
        [Required]
        
        public int InvitationImageId { get; set; }   
        
        [Required]
        [MaxLength(2048)]        
        public string InvitationNoImageURL { get; set; }   
        
        [Required]
        
        public int InvitationNoImageId { get; set; }   
        
        [Required]
        [MaxLength(2048)]        
        public string InvitationYesImageURL { get; set; }   
        
        [Required]
        
        public int InvitationYesImageId { get; set; }   
        
        [Required]
        
        public int InvitationCloseAreaXOffset { get; set; }   
        
        [Required]
        
        public int InvitationCloseAreaYOffset { get; set; }   
        
        [Required]
        
        public int InvitationCloseAreaWidth { get; set; }   
        
        [Required]
        
        public int InvitationCloseAreaHeight { get; set; }   
        
        [Required]
        
        public int InvitationTextAreaXOffset { get; set; }   
        
        [Required]
        
        public int InvitationTextAreaYOffset { get; set; }   
        
        [Required]
        
        public int InvitationTextAreaWidth { get; set; }   
        
        [Required]
        
        public int InvitationTextAreaHeight { get; set; }   
        
        [Required]
        
        public int InvitationTextFont { get; set; }   
        
        [Required]
        
        public int InvitationTextSize { get; set; }   
        
        [Required]
        
        public bool InvitationTextIfBold { get; set; }   
        
        [Required]
        
        public bool InvitationTextIfItalic { get; set; }   
        
        [Required]
        
        public bool InvitationTextIfUnderline { get; set; }   
        
        [Required]
        
        public int InvitationTextAlign { get; set; }   
        
        [Required]
        [MaxLength(8)]        
        public string InvitationTextColor { get; set; }   
        
        [Required]
        
        public bool InvitationIfSoundOn { get; set; }   
        
        [Required]
        [MaxLength(2048)]        
        public string InvitationSoundURL { get; set; }   
        
        [Required]
        
        public byte ChatWindowBrandingImageType { get; set; }   
        
        [Required]
        
        public int ChatWindowBrandingImageId { get; set; }   
        
        [Required]
        [MaxLength(2048)]        
        public string ChatWindowBrandingImageURL { get; set; }   
        
        [Required]
        
        public int ChatWindowPoweredByImageId { get; set; }   
        
        [Required]
        
        public bool ChatWindowIfCanSetVisitorName { get; set; }   
        
        [Required]
        
        public bool ChatWindowIfCanHaveVoiceChat { get; set; }   
        
        [Required]
        
        public bool ChatWindowIfShowEmailButton { get; set; }   
        
        [Required]
        
        public bool ChatWindowIfCanCaptureScreen { get; set; }   
        
        [Required]
        
        public bool ChatWindowIfCanSendFile { get; set; }   
        
        [Required]
        
        public bool ChatWindowIfSoundNotification { get; set; }   
        
        [Required]
        
        public int ChatWindowSoundId { get; set; }   
        
        [Required]
        
        public bool ChatWindowIfCanSwitchToOffline { get; set; }   
        
        [Required]
        
        public bool ChatWindowIfPrintTranscript { get; set; }   
        
        [Required]
        
        public bool ChatWindowIfUseCurrentOperatorEmailAsFromEmail { get; set; }   
        
        [Required]
        [MaxLength(256)]        
        public string ChatWindowPredefineEmailAsFromEmail_Name { get; set; }   
        
        [Required]
        [MaxLength(256)]        
        public string ChatWindowPredefineEmailAsFromEmail_Email { get; set; }   
        
        [Required]
        [MaxLength(8)]        
        public string WindowBackgroundColor { get; set; }   
        
        [Required]
        [MaxLength(8)]        
        public string SystemMessageColor { get; set; }   
        
        [Required]
        [MaxLength(8)]        
        public string OperatorNameColor { get; set; }   
        
        [Required]
        [MaxLength(8)]        
        public string OperatorMessageColor { get; set; }   
        
        [Required]
        [MaxLength(8)]        
        public string VisitorNameColor { get; set; }   
        
        [Required]
        [MaxLength(8)]        
        public string VisitorMessageColor { get; set; }   
        
        [Required]
        [MaxLength(8)]        
        public string TypingMessageColor { get; set; }   
        
        [Required]
        [MaxLength(8)]        
        public string WindowBorderColor { get; set; }   
        
        [Required]
        [MaxLength(8)]        
        public string BrandingBackgroundColor { get; set; }   
        
        [Required]
        [MaxLength(8)]        
        public string MessagesHistoryBackgroundColor { get; set; }   
        
        [Required]
        [MaxLength(8)]        
        public string OperatorNameBackgroundColor { get; set; }   
        
        [Required]
        [MaxLength(8)]        
        public string OperatorNameBorderColor { get; set; }   
        
        [Required]
        [MaxLength(8)]        
        public string VisitorNameBackgroundColor { get; set; }   
        
        [Required]
        [MaxLength(8)]        
        public string VisitorNameBorderColor { get; set; }   
        
        [Required]
        [MaxLength(8)]        
        public string MessagesInputBackgroundColor { get; set; }   
        
        [Required]
        [MaxLength(8)]        
        public string BottomBackgroundColor { get; set; }   
        
        [Required]
        [MaxLength(8)]        
        public string BottomTextColor { get; set; }   
        
        [Required]
        
        public int ChatWindowWidth { get; set; }   
        
        [Required]
        
        public int ChatWindowHeight { get; set; }   
        
        [Required]
        
        public bool ChatWindowIfEndChatWhenVisitorInactivity { get; set; }   
        
        [Required]
        
        public int ChatWindowTimeEndChatDelayWhenVisitorInactivity { get; set; }   
        
        [Required]
        
        public string ChatWindowSendTranscriptEmailAddresses { get; set; }   
        
        [Required]
        
        public bool ChatWindowIfAddVisitorInfo { get; set; }   
        
        [Required]
        
        public bool ChatWindowIfAddNavigation { get; set; }   
        
        [Required]
        
        public bool ChatWindowIfAddGeoInfo { get; set; }   
        
        [Required]
        
        public bool ChatWindowIfAddRating { get; set; }   
        
        [Required]
        
        public bool ChatWindowIfAddClientInfo { get; set; }   
        
        [Required]
        
        public bool ChatWindowIfAddOperatorComment { get; set; }   
        
        [Required]
        
        public bool PreChatIfEnabled { get; set; }   
        
        [Required]
        
        public string OfflineMessageSendTranscriptEmailAddresses { get; set; }   
        
        [Required]
        
        public bool OfflineMessageIfAddVisitorInfo { get; set; }   
        
        [Required]
        
        public bool OfflineMessageIfAddNavigation { get; set; }   
        
        [Required]
        
        public bool OfflineMessageIfAddGeoInfo { get; set; }   
        
        [Required]
        
        public bool OfflineMessageIfAddRating { get; set; }   
        
        [Required]
        
        public bool OfflineMessageIfAddClientInfo { get; set; }   
        
        [Required]
        
        public bool OfflineMessageIfAddOperatorComment { get; set; }   
        
        [Required]
        
        public bool OfflineMessageIfSendToAllOperatorEmailAccount { get; set; }   
        
        [Required]
        
        public bool RatingIfEnabled { get; set; }   
        
        [Required]
        
        public bool RatingIfAllowComment { get; set; }   
        
        [Required]
        
        public bool LanguageIfRightToLeft { get; set; }   
        
        [Required]
        
        public bool LanguageIfEnabled { get; set; }   
        
        [Required]
        
        public int LoginWindowType { get; set; }   
        
        [Required]
        
        public bool LoginWindowIfShowForgetPassword { get; set; }   
        
        [Required]
        
        public bool LoginWindowIfShowRegistNow { get; set; }   
        
        [Required]
        
        public bool LoginWindowIfAllowAutoLogin { get; set; }   
        
        [Required]
        
        public bool EmbeddedChatWindowIfEnabled { get; set; }   
        
        [Required]
        
        public int ChatWindowFormStyle { get; set; }   
        
        [Required]
        
        public bool OfflineMessageIfEnable { get; set; }   
        
        [Required]
        
        public bool OfflineMessageIfOpenInNewWindow { get; set; }   
        
        [Required]
        [MaxLength(2048)]        
        public string OfflineMessageUrl { get; set; }   
        
        [Required]
        
        public bool LoginIfShowVerificationCode { get; set; }   
        
        [Required]
        
        public bool PreChatIfDisableForUser { get; set; }   
        
        [Required]
        
        public bool ChatButtonIfNeedCustomizeMobileChatButton { get; set; }   
        
        [Required]
        [MaxLength(128)]        
        public string ChatButtonMobileThemeColor { get; set; }   
        
        [Required]
        [MaxLength(128)]        
        public string ChatButtonMobileTextColor { get; set; }   
        
        [Required]
        
        public bool ChatButtonPositionIfShowAdvanced { get; set; }   
        
        [Required]
        
        public int PreChatSocialMedia { get; set; }   
        
        [Required]
        
        public bool Ifenableroute { get; set; }   
        
        [Required]
        
        public byte Routemethod { get; set; }   
        
        [Required]
        
        public int FailRouteType { get; set; }   
        
        [Required]
        
        public int FailRouteId { get; set; }   
        
        [Required]
        [MaxLength(1024)]        
        public string FailRouteMessageTo { get; set; }   
        
        [Required]
        [MaxLength(8)]        
        public string ChatWindowThemeColor { get; set; }   
        
        [Required]
        
        public byte ChatWindowThemeType { get; set; }   
        
        [Required]
        
        public string ChatWindowCSSClassic { get; set; }   
        
        [Required]
        
        public string ChatWindowCSSBubble { get; set; }   
        
        [Required]
        
        public string ChatWindowCSSSimple { get; set; }   
        
        [Required]
        
        public int ChatWindowHeaderType { get; set; }   
        
        [Required]
        
        public bool ChatWindowIfShowAvatar { get; set; }   
        
        [Required]
        
        public bool ChatWindowIfShowLogo { get; set; }   
        
        [Required]
        
        public int ChatWindowLogoImageId { get; set; }   
        
        [Required]
        
        public bool IfRequireWrapUpChat { get; set; }   
        
        [Required]
        
        public bool IfEnableDomainRestriction { get; set; }   
        
        [Required]
        
        public string AllowedDomains { get; set; }   
        
        [Required]
        
        public byte InvitationStyle { get; set; }   
        
        [Required]
        
        public bool PreChatIfNotRecordCookie { get; set; }   
        
        [Required]
        
        public bool IfUseOwnSMTP { get; set; }   
        
        [Required]
        
        public bool IfEnableCustomJS { get; set; }   
        
        [Required]
        
        public string CustomJS { get; set; }   
        
        [Required]
        
        public int RoutePriority { get; set; }   
        
        [Required]
        
        public int FailRoutePriority { get; set; }   
        
        [Required]
        
        public bool ChatWindowIfBrowserPopupNotification { get; set; }   
        
        [Required]
        
        public int ChatButtonMobileType { get; set; }   
        
        [Required]
        
        public int ChatButtonMobileOnlineImageId { get; set; }   
        
        [Required]
        
        public int ChatButtonMobileOfflineImageId { get; set; }   
        
        [Required]
        
        public byte ChatButtonMobilePosition { get; set; }   
        
        [Required]
        
        public bool ChatWindowIfEnableSendTranscriptEmail { get; set; }   
        
        [Required]
        
        public string ChatWindowSendTranscriptEmailSubject { get; set; }   
        
        [Required]
        
        public bool IfEnableAudioChat { get; set; }   
        
        [Required]
        
        public bool IfEnableVideoChat { get; set; }   
        
        [Required]
        
        public bool ChatbotIfEnable { get; set; }   
        
        [Required]
        
        public int ChatbotAvatarImageID { get; set; }   
        
        [Required]
        
        public bool ChatbotIfShowChatAgent { get; set; }   
        
        [Required]
        
        public int ChatbotChatAgentButtonPositionType { get; set; }   
        
        [Required]
        
        public bool ChatbotNoAnswerIfShowChatAgent { get; set; }   
        
        [Required]
        
        public bool ChatbotNotHelpfulIfShowChatAgent { get; set; }   
        
        [Required]
        
        public int ChatbotPossibleQuestionsThreshold { get; set; }   
        
        [Required]
        
        public bool ChatbotPossibleQuestionIfShowChatAgent { get; set; }   
        
        [Required]
        
        public int ChatbotDistributedType { get; set; }   
        
        [Required]
        
        public int ChatbotDistributedQueueLength { get; set; }   
        
        [Required]
        
        public int ChatbotDistributedPercent { get; set; }   
        
        [Required]
        
        public int ChatbotQuestionBaseType { get; set; }   
        
        [Required]
        
        public int ChatbotHighConfidenceAnswerScore { get; set; }   
        
        [Required]
        
        public int ChatbotNoAnswerScore { get; set; }   
        
        [Required]
        
        public int ChatWindowStyle { get; set; }   
        
        [Required]
        
        public bool ChatWindowHeaderIfShowTitle { get; set; }   
        
        [Required]
        
        public bool ChatWindowHeaderIfShowBio { get; set; }   
        
        [Required]
        
        public bool PreChatHeaderIfShowTeamName { get; set; }   
        
        [Required]
        
        public bool PreChatHeaderIfShowAgentAvatars { get; set; }   
        
        [Required]
        
        public bool ChatContentIfShowAvatar { get; set; }   
        
        [Required]
        
        public bool ChatContentIfShowTexture { get; set; }   
        
        [Required]
        
        public int ChatContentTextureType { get; set; }   
        
        [Required]
        [MaxLength(8)]        
        public string ChatButtonColor { get; set; }   
        
        [Required]
        
        public string ChatWindowCustomCSSClassic { get; set; }   
        
        [Required]
        
        public string ChatWindowCustomCSSCircle { get; set; }   
        
        [Required]
        
        public int AdaptiveButtonType { get; set; }   
        

        
        public int? BotTakePercentageForRoute { get; set; }   
        

        
        public int? BotTakePercentageForFailRoute { get; set; }   
        

        
        public bool? ifDeleted { get; set; }   
        
    }
}
